﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Utiles.Persistencia
{
    public  class ObjetoPersistente
    {
        /// <summary>
        /// Identificador de objeto
        /// </summary>
        public int Oid {get;set;}          
        /// <summary>
        /// Interfaz de persistencia
        /// </summary>
        private IPersistencia IPersistencia 
        {
            get 
            {
                string clase = System.Configuration.ConfigurationManager.AppSettings["ClasePersistencia"];
                string assembly = System.Configuration.ConfigurationManager.AppSettings["DllPersistencia"];
                IPersistencia p;
                p = AppDomain.CurrentDomain.CreateInstanceAndUnwrap(assembly, clase) as IPersistencia;
                if (p == null)
                    throw new Exception("Error al cargar Dll Persistencia");
                return p;
            }
            set { }
        }
        /// <summary>
        /// Constructor por defecto
        /// </summary>
        public ObjetoPersistente() 
        {
            
        }        
        /// <summary>
        /// Agregar el objeto en bd
        /// </summary>
        public  void AgregarBD() 
        {
            IPersistencia.Agregar(this);
        }
        /// <summary>
        /// Modifica el objeto en bd
        /// </summary>
        public  void ModificarBD() 
        {
            IPersistencia.Modificar(this);
        }
        /// <summary>
        /// Elimina el objeto en bd
        /// </summary>
        public  void EliminarBD() 
        {
            IPersistencia.Eliminar(this);
        }
        /// <summary>
        /// Muestra todos los objetos de la bd
        /// </summary>
        /// <returns></returns>
        public  List<ObjetoPersistente> MostrarTodoBD() 
        {
            return IPersistencia.MostrarTodo(this);
        }
        /// <summary>
        /// Selecciona el objeto de la bd
        /// </summary>
        /// <returns></returns>
        public  ObjetoPersistente SeleccionaObjetoBD() 
        {
            return IPersistencia.SeleccionaObjeto(this);
        }
    }
}
